/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.com.deuda.bd.dao;

/**
 *
 * @author Sistemas
 */
import java.util.ArrayList;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import pe.com.deuda.bd.hibernate.HibernateMultiple;
import pe.com.deuda.bd.model.Usuario;
import pe.com.deuda.bd.model.Deudor;
import pe.com.deuda.bd.model.Reclamo;

public class ConsultaDAO {

    private Session sesion;
    private Transaction tx;

    public static  List<Usuario> getListaUsuario(String usuario, String password) {
        List<Object[]> listaResultado = new ArrayList<Object[]>();
        List<Usuario> ListaUsuario = new ArrayList<Usuario>();
        Util newUtilDAO = new Util();
        try {
            String cadena="select id_usuario, usu_nombre,  usu_appaterno, usu_apmaterno, usu_mail, usu_telefono from tb_usuario where usu_activo='1' and id_usuario='"  + usuario + "' and usu_password='" + password + "'";
            System.out.println(cadena);
            listaResultado =
                    newUtilDAO.consultaLibre(cadena, HibernateMultiple.BD_DEUDA );
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("ERROR : " + e);
        }
        if (listaResultado.size() > 0) {
            for (int row=0; row<listaResultado.size();row++){
                Object[] rowResult=listaResultado.get(row);
                Usuario oUsuario = new Usuario();
                if (rowResult[0]!=null){ oUsuario.setUsuario(rowResult[0].toString()); } else {oUsuario.setUsuario("&nbsp");}
                if (rowResult[1]!=null){ oUsuario.setNombre(rowResult[1].toString()); } else {oUsuario.setNombre("&nbsp"); }
                if (rowResult[2]!=null){ oUsuario.setAppaterno(rowResult[2].toString()); } else {oUsuario.setAppaterno("&nbsp");}
                if (rowResult[3]!=null){ oUsuario.setApmaterno(rowResult[3].toString()); } else {oUsuario.setApmaterno("&nbsp");}
                if (rowResult[4]!=null){ oUsuario.setMail(rowResult[4].toString()); } else {oUsuario.setMail("&nbsp");}
                if (rowResult[5]!=null){ oUsuario.setTelefono(rowResult[5].toString()); } else {oUsuario.setTelefono("&nbsp");}
                ListaUsuario.add(oUsuario);
            }
        }
        return ListaUsuario;
    }


    public static  Deudor getDeudor(String idDeudor) {
        List<Object[]> listaResultado = new ArrayList<Object[]>();
        Util newUtilDAO = new Util();
        Deudor oDeudor = new Deudor();
        try {
            String cadena="select * from tb_deudor where id_deudor='" + idDeudor + "'";
            System.out.println(cadena);
            listaResultado =
                    newUtilDAO.consultaLibre(cadena, HibernateMultiple.BD_DEUDA );
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("ERROR : " + e);
        }
        if (listaResultado.size() > 0) {
            for (int row=0; row<listaResultado.size();row++){
                Object[] rowResult=listaResultado.get(row);
                if (rowResult[0]!=null){ oDeudor.setIddeudor(rowResult[0].toString()); } else {oDeudor.setIddeudor("&nbsp");}
                if (rowResult[0]!=null){ oDeudor.setNombre(rowResult[1].toString()); } else {oDeudor.setNombre("&nbsp");}
                if (rowResult[0]!=null){ oDeudor.setAppaterno(rowResult[2].toString()); } else {oDeudor.setAppaterno("&nbsp");}
                if (rowResult[0]!=null){ oDeudor.setApmaterno(rowResult[3].toString()); } else {oDeudor.setApmaterno("&nbsp");}
                if (rowResult[0]!=null){ oDeudor.setMail(rowResult[4].toString()); } else {oDeudor.setMail("&nbsp");}
                if (rowResult[0]!=null){ oDeudor.setTelefono(rowResult[5].toString()); } else {oDeudor.setTelefono("&nbsp");}
                if (rowResult[0]!=null){ oDeudor.setDireccion(rowResult[6].toString()); } else {oDeudor.setDireccion("&nbsp");}
                if (rowResult[0]!=null){ oDeudor.setDistrito(rowResult[7].toString()); } else {oDeudor.setDistrito("&nbsp");}
                if (rowResult[0]!=null){ oDeudor.setDepartamento(rowResult[8].toString()); } else {oDeudor.setDepartamento("&nbsp");}
                if (rowResult[0]!=null){ oDeudor.setProvincia(rowResult[9].toString()); } else {oDeudor.setProvincia("&nbsp");}
                if (rowResult[0]!=null){ oDeudor.setMotivo(rowResult[10].toString()); } else {oDeudor.setMotivo("&nbsp");}
                if (rowResult[0]!=null){ oDeudor.setMonto(rowResult[11].toString()); } else {oDeudor.setMonto("&nbsp");}
                if (rowResult[0]!=null){ oDeudor.setMoneda(rowResult[12].toString()); } else {oDeudor.setMoneda("&nbsp");}
                if (rowResult[0]!=null){ oDeudor.setSustento(rowResult[13].toString()); } else {oDeudor.setSustento("&nbsp");}
                if (rowResult[0]!=null){ oDeudor.setDescripcion(rowResult[14].toString()); } else {oDeudor.setDescripcion("&nbsp");}
                if (rowResult[0]!=null){ oDeudor.setDni(rowResult[15].toString()); } else {oDeudor.setDni("&nbsp");}
            }
        }
        return oDeudor;
    }

    public static  List<Deudor> getListaDeudor(String valor) {
        List<Object[]> listaResultado = new ArrayList<Object[]>();
        List<Deudor> ListaDeudor = new ArrayList<Deudor>();
        Util newUtilDAO = new Util();
        try {
            String cadena="select id_deudor, deu_nombre,  deu_appaterno, deu_apmaterno, deu_dni from tb_deudor where deu_appaterno='" + valor + "' or deu_dni='"  + valor + "'";
            System.out.println(cadena);
            listaResultado =
                    newUtilDAO.consultaLibre(cadena, HibernateMultiple.BD_DEUDA );
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("ERROR : " + e);
        }
        if (listaResultado.size() > 0) {
            for (int row=0; row<listaResultado.size();row++){
                Object[] rowResult=listaResultado.get(row);
                Deudor oDeudor = new Deudor();
                if (rowResult[0]!=null){ oDeudor.setIddeudor(rowResult[0].toString()); } else {oDeudor.setIddeudor("&nbsp");}
                if (rowResult[1]!=null){ oDeudor.setNombre(rowResult[1].toString()); } else {oDeudor.setNombre("&nbsp"); }
                if (rowResult[2]!=null){ oDeudor.setAppaterno(rowResult[2].toString()); } else {oDeudor.setAppaterno("&nbsp");}
                if (rowResult[3]!=null){ oDeudor.setApmaterno(rowResult[3].toString()); } else {oDeudor.setApmaterno("&nbsp");}
                if (rowResult[4]!=null){ oDeudor.setDni(rowResult[4].toString()); } else {oDeudor.setDni("&nbsp");}
                ListaDeudor.add(oDeudor);
            }
        }
        return ListaDeudor;
    }


   public static  String RegistraUsuario(Usuario usuario) {
        String respuesta;
        respuesta="";
        Util newUtilDAO = new Util();
        try {
            String cadena="insert into tb_usuario (id_usuario, usu_nombre, usu_appaterno, usu_apmaterno, usu_password, usu_mail, usu_telefono, usu_direccion, usu_distrito, usu_codpostal) " +
                    " values ('" + usuario.getUsuario().toString() +"','"  + usuario.getNombre().toString() + "','" + usuario.getAppaterno().toString() + "','" + usuario.getApmaterno().toString()+
                    "','" + usuario.getPassword().toString() + "','" + usuario.getMail().toString() + "','" + usuario.getTelefono().toString() + "','" + usuario.getDireccion().toString() +
                    "','" + usuario.getDistrito().toString() + "','" + usuario.getCodpostal().toString()  +"')";
            System.out.println(cadena);            
            newUtilDAO.sentenciaSQLlibre(cadena, HibernateMultiple.BD_DEUDA );
            respuesta="OK";
        } catch (Exception e) {
            e.printStackTrace();
            respuesta="ERROR " + e.getMessage().toString() ;
            System.err.println("ERROR : " + e);
        }
        return respuesta;
   }


   public static  String RegistraDeudor(Deudor deudor) {
        String respuesta;
        String res;
        respuesta="";
        res="";
        Util newUtilDAO = new Util();
        try {
            String cadena="insert into tb_deudor (deu_nombre, deu_appaterno, deu_apmaterno, deu_direccion, deu_departamento, deu_provincia, deu_distrito, deu_mail, deu_telefono, deu_motivo, deu_monto, deu_moneda, deu_sustento, deu_descripcion, deu_dni, deu_usuario, deu_fecha ) " +
                    " values ('" + deudor.getNombre().toString() + "','" + deudor.getAppaterno().toString() + "','" + deudor.getApmaterno().toString() + "','" + deudor.getDireccion().toString() + "','" + deudor.getDepartamento().toString() + "','" + deudor.getProvincia().toString() +
                    "','" + deudor.getDistrito().toString() + "','" + deudor.getMail().toString() + "','" + deudor.getTelefono().toString() + "','" + deudor.getMotivo().toString() + "','" + deudor.getMonto().toString() + "','" +deudor.getMoneda().toString() + "','" + deudor.getSustento().toString() +
                    "','" + deudor.getDescripcion().toString() + "','" + deudor.getDni().toString() + "','" + deudor.getUsuario().toString() +"',sysdate())";
            res=cadena;
            System.out.println(cadena);
            newUtilDAO.sentenciaSQLlibre(cadena, HibernateMultiple.BD_DEUDA );
            respuesta="OK";
        } catch (Exception e) {
            e.printStackTrace();
            respuesta="ERROR "  + res + " - "+ e.getMessage().toString() ;
            System.err.println("ERROR : " + e);
        }
        return respuesta;
   }


 public static  List<Reclamo> getListaReclamo(String valor) {
        List<Object[]> listaResultado = new ArrayList<Object[]>();
        List<Reclamo> ListaReclamo = new ArrayList<Reclamo>();
        Util newUtilDAO = new Util();
        try {
            String cadena="SELECT id_reclamo, rec_nombre, rec_appaterno, rec_apmaterno, rec_telefono, rec_direccion from tb_reclamo where rec_appaterno='" + valor + "'";
            System.out.println(cadena);
            listaResultado =
                    newUtilDAO.consultaLibre(cadena, HibernateMultiple.BD_DEUDA );
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("ERROR : " + e);
        }
        if (listaResultado.size() > 0) {
            for (int row=0; row<listaResultado.size();row++){
                Object[] rowResult=listaResultado.get(row);
                Reclamo oReclamo = new Reclamo();
                if (rowResult[0]!=null){ oReclamo.setIdReclmao(rowResult[0].toString()); } else {oReclamo.setIdReclmao("&nbsp");}
                if (rowResult[1]!=null){ oReclamo.setNombre(rowResult[1].toString()); } else {oReclamo.setNombre("&nbsp"); }
                if (rowResult[2]!=null){ oReclamo.setAppaterno(rowResult[2].toString()); } else {oReclamo.setAppaterno("&nbsp");}
                if (rowResult[3]!=null){ oReclamo.setApmaterno(rowResult[3].toString()); } else {oReclamo.setApmaterno("&nbsp");}
                if (rowResult[4]!=null){ oReclamo.setTelefono(rowResult[4].toString()); } else {oReclamo.setTelefono("&nbsp");}
                if (rowResult[5]!=null){ oReclamo.setDireccion(rowResult[5].toString()); } else {oReclamo.setDireccion("&nbsp");}
                ListaReclamo.add(oReclamo);
            }
        }
        return ListaReclamo;
    }


    public static  Reclamo getReclamo(String idReclamo) {
        List<Object[]> listaResultado = new ArrayList<Object[]>();
        Util newUtilDAO = new Util();
        Reclamo oReclamo = new Reclamo();
        try {
            String cadena="SELECT id_reclamo, rec_nombre, rec_appaterno, rec_apmaterno, rec_mail, rec_telefono, rec_direccion, rec_distrito, " +
                " rec_codpostal, rec_comentario from tb_reclamo where id_reclamo='" + idReclamo + "'";
            System.out.println(cadena);
            listaResultado =
                    newUtilDAO.consultaLibre(cadena, HibernateMultiple.BD_DEUDA );
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("ERROR : " + e);
        }
        if (listaResultado.size() > 0) {
            for (int row=0; row<listaResultado.size();row++){
                Object[] rowResult=listaResultado.get(row);
                if (rowResult[0]!=null){ oReclamo.setIdReclmao(rowResult[0].toString()); } else {oReclamo.setIdReclmao("&nbsp");}
                if (rowResult[0]!=null){ oReclamo.setNombre(rowResult[1].toString()); } else {oReclamo.setNombre("&nbsp");}
                if (rowResult[0]!=null){ oReclamo.setAppaterno(rowResult[2].toString()); } else {oReclamo.setAppaterno("&nbsp");}
                if (rowResult[0]!=null){ oReclamo.setApmaterno(rowResult[3].toString()); } else {oReclamo.setApmaterno("&nbsp");}
                if (rowResult[0]!=null){ oReclamo.setMail(rowResult[4].toString()); } else {oReclamo.setMail("&nbsp");}
                if (rowResult[0]!=null){ oReclamo.setTelefono(rowResult[5].toString()); } else {oReclamo.setTelefono("&nbsp");}
                if (rowResult[0]!=null){ oReclamo.setDireccion(rowResult[6].toString()); } else {oReclamo.setDireccion("&nbsp");}
                if (rowResult[0]!=null){ oReclamo.setDistrito(rowResult[7].toString()); } else {oReclamo.setDistrito("&nbsp");}
                if (rowResult[0]!=null){ oReclamo.setCodpostal(rowResult[8].toString()); } else {oReclamo.setCodpostal("&nbsp");}
                if (rowResult[0]!=null){ oReclamo.setComentario(rowResult[9].toString()); } else {oReclamo.setComentario("&nbsp");}
            }
        }
        return oReclamo;
    }

      public static  String RegistraReclamo(Reclamo reclamo) {
        String respuesta;
        String res;
        respuesta="";
        res="";
        Util newUtilDAO = new Util();
        try {
            String cadena="insert into tb_reclamo (rec_nombre, rec_appaterno, rec_apmaterno, rec_direccion, rec_distrito, rec_mail, rec_telefono, rec_comentario, rec_codpostal, rec_usuario, rec_fecha ) " +
                    " values ('" + reclamo.getNombre().toString() + "','" + reclamo.getAppaterno().toString() + "','" + reclamo.getApmaterno().toString() + "','" + reclamo.getDireccion().toString() + 
                    "','" + reclamo.getDistrito().toString() + "','" + reclamo.getMail().toString() + "','" + reclamo.getTelefono().toString() + "','" + reclamo.getComentario().toString() + "','" + reclamo.getCodpostal().toString() +
                    "','" + reclamo.getUsuario().toString() +"',sysdate())";
            res=cadena;
            System.out.println(cadena);
            newUtilDAO.sentenciaSQLlibre(cadena, HibernateMultiple.BD_DEUDA );
            respuesta="OK";
        } catch (Exception e) {
            e.printStackTrace();
            respuesta="ERROR "  + res + " - "+ e.getMessage().toString() ;
            System.err.println("ERROR : " + e);
        }
        return respuesta;
   }


    private void iniciaOperacion() throws HibernateException {
        sesion = HibernateMultiple.currentSession();
        tx = sesion.beginTransaction();
    }

    private void manejaExcepcion(HibernateException he) throws HibernateException {
        tx.rollback();
        throw new HibernateException("Ocurri� un error en la capa de acceso a datos", he);
    }

}
